// 目的将登陆请求axios.post('http://localhost:8888/api/private/v1/login', this.loginForm)封装到一个方法中

import axios from 'axios'

// 设置请求拦截，作用是会先将所有的请求拦截下来，做一些处理，处理完了之后再把请求发送出去
axios.interceptors.request.use(function (config) {
  // config表示请求对象
  // 将token塞进请求头中
  // console.log(config)
  // 获取token
  let mytoken = localStorage.getItem('mytoken')
  // console.log(mytoken)
  if (mytoken) {
    // 注意这个请求不能随便写，得看前后台约定的字段名叫什么,此处我们约定的为Authorization
    config.headers.Authorization = mytoken
  }
  // 请求对象必须要return回去
  return config
}, function (error) {
  // Do something with request error
  return Promise.reject(error)
})

// 设置基准路径，目的是为了给所有的请求加上基准路径，比如下面的登陆，会自动拼接成http://localhost:8888/api/private/v1/login
axios.defaults.baseURL = '/api/private/v1/'

// 当箭头函数的执行体里面只有一句话的时候，可以省略花括号和return
// export const login = (obj) => {
//   // axios的post方法执行完以后得到的一个promise对象，必须将这个promise对象return回去
//   return axios.post('login', obj)
// }

export const login = obj => axios.post('login', obj)

// 用户列表数据获取
export const getUsers = obj => axios.get('users', { params: obj })

// 修改用户状态
export const changeUserState = (uid, type) => axios.put(`users/${uid}/state/${type}`)

// 添加用户
export const addUser = obj => axios.post('users', obj)

// 编辑用户
export const editUser = (obj) => axios.put(`users/${obj.id}`, obj)

// 删除用户
export const deleteUser = id => axios.delete(`users/${id}`)

// 获取角色列表
export const getRoleList = () => axios.get('roles')

// 给用户分配角色
export const grantUserRole = (id, rid) => axios.put(`users/${id}/role`, { rid: rid })

// 获取权限列表数据，type参数的值只有两个，一个是list，另一个是tree
export const getRightList = type => axios.get(`rights/${type}`)

// 删除指定角色的权限
export const delRoleRight = (roleId, rightId) => axios.delete(`roles/${roleId}/rights/${rightId}`)

// 给角色授权,rids这个变量它是字符串，接口文档描述有问题
export const postRoleRight = (roleId, rids) => axios.post(`roles/${roleId}/rights`, { rids: rids })

// 获取左侧菜单
export const getMenus = () => axios.get('menus')

// // 获取商品数据列表
// export const getCategories = (type) => axios.get('categories', { params: { type: type } })

// 获取商品数据列表,接口文档有错，还需要传递另外两个参数
export const getCategories = (type, pagesize, pagenum) => axios.get('categories', { params: { type: type, pagesize: pagesize, pagenum: pagenum } })

// 添加分类
export const addCate = obj => axios.post('categories', obj)
